/* ###################################### */
/* ###     Util Engine, by Kalith    ### */
/* ###################################### */
/*                                        */


#ifndef Util_UTILS_LOG_H
#define Util_UTILS_LOG_H

#include "Types.h"

namespace Util
{
    void          Log(const Str& sMessage, const Bool& bTimeStamps, const UInt& uiOffset);
    const UInt& GetLogLevel();

    template<class T> void Log(const T& mObject, const Bool& bTimeStamps = true, const UInt& uiOffset = 0)
    {
        Log(Str::Convert(mObject), bTimeStamps, uiOffset);
    }

    template<uint N, class T> void Log(const T& mObject, const Bool& bTimeStamps = true, const UInt& uiOffset = 0)
    {
        if (GetLogLevel() >= N)
            Log(Str::Convert(mObject), bTimeStamps, uiOffset);
    }

    void Error(const Str& sClass, const Str& sMessage);
    void Warning(const Str& sClass, const Str& sMessage);
}

#endif
